Recently, several research groups as well as commercial enterprises have been striving to develop a general artificial intelligence (AI) engine for real-world applications that copes with problems and uncertain in complex and dynamic environments. In these environments it is impractical and usually unfeasible to envisage and pre-program in advance all the possible situations and events that may occur. Accordingly, development of an AI engine should be aimed to include capabilities that enable it to reason about unanticipated opportunities. Moreover, typically the AI engine should be independent of domain knowledge to allow reusability across several domains. These essential properties enable more realistic behavior of the application, and provide added flexibility to the system saving implementation efforts.
To solve a problem (e.g., to identify the best action for each situation), a solution set or search space including permutations of possible outcomes must be known. A problem in dynamic and uncertain environment is difficult to be solved since the search space becomes large, even for relatively small problems. A well known technique to resolve problems with a large search space is an abstraction based technique. In that technique the original search space is mapped into abstract space in which irrelevant details are disregarded at different levels of granularity. The abstraction based technique has been proven to be effective in several search problems. For example, abstraction is found to improve the efficiently of real-time path-finding problem (V. Bulitko, N. Sturtevant, J. Lu, and T. Yau, ‘Graph Abstraction in Real-time Heuristic Search’, Journal of Artificial Intelligence Research, 30, pp. 51-100, (2007)). In addition, abstraction is often used in real world applications for task planning, in which planning and execution are interleaved (M. Paolucci, O. Shehory, and K. Sycara, ‘Interleaving planning and execution in a multiagent team planning environment’, Electron. Trans. Artif. Intell., 4, pp. 33-43, (2000)).
Abstraction based techniques include representing problems with abstract graphs. An abstract graph may be initially used to represent a partial solution to a problem and may be extended as the solution is refined and completed, for example, as details are added. Partial solutions to a problem may include a subset of the complete solution set or search space, in which some, but not all, permutations of possible outcomes are known. With abstraction based technique, partial solutions may be applied to the problem to modify the environment. Partial solutions can be applied to the problem at a variety of different levels. The abstract graph of the partial solution can be expanded using the partial knowledge along with dynamic changes to the environment that occur during the process of solving the problem. Thus, the abstraction based technique may be suitable to handle real-world problems that involve partial knowledge of the problem and its environment.
An abstract graph typically includes nodes (e.g., vertices) and edges arranged in multiple levels. A complete solution to a problem may include a complete solution set or search space, in which all permutations of possible outcomes are known. The complete solution is typically represented by a graph having all levels fully instantiated. Therefore, a complete graph can be viewed as fully instantiated sets of nodes and edges, which are required for resolving the entire problem. In the same way, an abstract graph of the partial solution can be viewed as partially instantiated sets of nodes and edges, which are modified in the process of solving the problem as the partial solution is refined.
The refinement process extends the abstract graph of the partial solution to become a complete graph of the complete solution. The refinement process includes several operations which depend on the type of the problem. For example, in a task planning problem, a sequence of executable tasks may be determined to achieve a given goal. Resolving this problem by abstraction based technique often involves engaging a hierarchical planning strategy that exploits well-designed hierarchies of a task, which is referred to as a Hierarchical Task Network (HTN) planner (K. Erol, D. Nau, and J. Hendler, ‘{HTN} planning: Complexity and expressivity’, in AAAI-94, pp. 1123-1128, (1994)). In the hierarchical planning strategy, an initial task, which describes an abstract plan, is an over-arching (e.g., high-level) description of the problem. The abstract plan is then refined by applying a deconstruction operation to deconstruct the initial task into a partially ordered set of lower-level sub-tasks. The abstract plan may be represented by an abstract graph in which the tasks are represented by nodes and the dependencies among the tasks are represented by edges. The deconstruction operation extends the abstract graph by inserting nodes and edges into the graph. The deconstruction operation may be considered complete when all the tasks of the abstract graph are deconstructed into smaller sub-tasks until the lowest level tasks are atomic executable tasks. An atomic executable task is a task that cannot or need not be deconstructed into multiple sub-tasks.
The structure of an abstract graph is consistent with the type of the problem. The structure of an abstract graph may include, e.g., the type of connection between the nodes (by the edges), the process by which new edges and nodes are added to the abstract graph, the type of data assigned to each node and edge, and/or other features of the abstract graph. For example, the graphs of FIGS. 1 and 2 (e.g., having a hierarchical task network structure) have a different structure than the graphs of FIG. 6 (e.g., having a temporal constraint network and a navigation graph using a clique or quad-three representation). Thus, dissimilar problems may be represented by different structures of abstract graphs. In one example, an abstract graph representing a path-finding problem (e.g., in which a planner searches a route from a source to a destination on a map) typically has a different structure than an abstract graph representing a task planning problem. Other examples of abstract graphs having dissimilar structures include, for example: a constraint-satisfaction graph for finding a solution that satisfies given constraints (e.g., a scheduler with temporal constraints); a hierarchical tree graph that represents an organization (e.g., military force); and a graph that represents a plan of an area (e.g., city plan, architecture plan). Furthermore, even similar problems may be resolved in different ways and thus are represented with different abstract graphs. For example, a path-finding problem may be resolved either by quad-trees (H. Samet, An overview of quadtrees, octrees, and related hierarchical data structures, in: NATO ASI Series, Vol. F40 (1988), 51-68) or by a clique (from abstraction technique, as described by V. Bulitko, N. Sturtevant, J. Lu, and T. Yau, referenced hereinabove). Accordingly, the construction of an abstract graph is based on the type of resolving technique and on the specific type and environment of the problem.